package beans;

import bc.CuentaDelegate;
import bc.ExtornoDelegate;
import edu.upn.sigemfi.ope.be.Extorno;
import edu.upn.sigemfi.plt.be.Cuenta;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

public class ExtornoController {

    private ExtornoDelegate delegado;
    private CuentaDelegate delegadoCuenta;
    private Object operacion;
    private Cuenta cuenta;

    public ExtornoController() {
        delegadoCuenta = new CuentaDelegate();
    }

    public Object getOperacion() {
        return operacion;
    }

    public void setOperacion(Object operacion) {
        this.operacion = operacion;
    }

    public Cuenta getCuenta() {
        return cuenta;
    }

    public void setCuenta(Cuenta cuenta) {
        this.cuenta = cuenta;
    }

    //Metodo para mostrar mensajes en la pagina
    public void mostrarMensaje(String resumen, String detalle, FacesMessage.Severity severidad) {
        try {
            FacesMessage fm = new FacesMessage(severidad, resumen, detalle);
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        } catch (Exception e) {
            FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage());
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        }
    }

    public String cancelar() {
        operacion = null;
        cuenta = null;
        return "volver";
    }

    public String extornar() {
        try {
            if (operacion != null) {
                //delegado.crear(extorno);
                mostrarMensaje("Exito", "El extorno de la operacion se realizo exitosamente.", FacesMessage.SEVERITY_INFO);
            } else {
                mostrarMensaje("Error", "Asegurese de haber seleccionado una operacion", FacesMessage.SEVERITY_ERROR);
                return "";
            }
        } catch (Exception e) {
            mostrarMensaje(e.getMessage(), e.getMessage(), FacesMessage.SEVERITY_ERROR);
        }
        return "volver";
    }

    public List<Extorno> getExtornos() {
        try {
            return delegado.getExtornos();
        } catch (Exception e) {
            mostrarMensaje(e.getMessage(), e.getMessage(), FacesMessage.SEVERITY_ERROR);
        }
        return null;
    }

    public List<Object> getOperaciones() {
        try {
            return null;//delegadoDetTransaccion.getOperacionesPorNroCuenta(cuenta.getNroCuenta());
        } catch (Exception e) {
            mostrarMensaje(e.getMessage(), e.getMessage(), FacesMessage.SEVERITY_ERROR);
        }
        return null;
    }

    public Extorno buscar(Long idExtorno) {
        try {
            return delegado.buscar(idExtorno);
        } catch (Exception e) {
            mostrarMensaje(e.getMessage(), e.getMessage(), FacesMessage.SEVERITY_ERROR);
        }
        return null;
    }

    public Extorno buscar_Extorno(Long id) throws Exception {
        return buscar(id);
    }

    public String buscarCuenta() {
        try {
            cuenta = delegadoCuenta.buscarCuentaPorNro(cuenta.getNroCuenta());
        } catch (Exception ex) {
            mostrarMensaje("Error", "Buscar Cuenta", FacesMessage.SEVERITY_ERROR);
        }
        return "";
    }
}
